text: Add a context action for visibility
authorMatthias Clasen <mclasen@redhat.com>
Thu, 11 Apr 2019 18:47:20 +0000 (14:47 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 13 Jun 2019 11:59:50 +0000 (11:59 +0000)
This will be used by GtkPasswordEntry for amending
the context menu.

gtk/gtktext.c

index ae703231fff7663d65edaa5d51cc7e2b11fc24c6..94e9cab2705a9bda3f2df17d3c94468332b534d6 100644 (file)
@@ -5261,10 +5261,15 @@ gtk_text_set_visibility (GtkText  *self,
 
   if (priv->visible != visible)
     {
+      GAction *action;
+
       priv->visible = visible;
 
       g_object_notify (G_OBJECT (self), "visibility");
       gtk_text_recompute (self);
+
+      action = g_action_map_lookup_action (priv->context_actions, "toggle-visibility");
+      g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (visible));
     }
 }
 
@@ -5662,6 +5667,15 @@ insert_emoji_activated (GSimpleAction *action,
   hide_selection_bubble (GTK_TEXT (user_data));
 }
 
+static void
+toggle_visibility (GSimpleAction *action,
+                   GVariant      *parameter,
+                   gpointer       user_data)
+{
+  GtkText *text = GTK_TEXT (user_data);
+  gtk_text_set_visibility (text, !gtk_text_get_visibility (text));
+}
+
 static void
 gtk_text_add_context_actions (GtkText *self)
 {
@@ -5674,6 +5688,7 @@ gtk_text_add_context_actions (GtkText *self)
     { "delete-selection", delete_selection_activated, NULL, NULL, NULL },
     { "select-all", select_all_activated, NULL, NULL, NULL },
     { "insert-emoji", insert_emoji_activated, NULL, NULL, NULL },
+    { "toggle-visibility", toggle_visibility, NULL, "true", NULL },
   };
 
   GSimpleActionGroup *actions = g_simple_action_group_new ();